/*
 * Copyright (c) 2018-2999 广州市蓝海创新科技有限公司 All rights reserved.
 *
 * https://www.mall4j.com/
 *
 * 未经允许，不可做商业用途！
 *
 * 版权所有，侵权必究！
 */
package com.yami.shop.dao;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.yami.shop.bean.model.Supplier;
import com.yami.shop.bean.model.SupplierProd;
import com.yami.shop.bean.vo.SupplierProdVO;
import com.yami.shop.common.util.PageAdapter;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * @author Citrus
 * @date 2021-09-07 10:12:32
 */
public interface SupplierProdMapper extends BaseMapper<SupplierProd> {

    /**
     * 搜索所有商品
     *
     * @param supplierId
     * @param lang
     * @return
     */
    List<SupplierProdVO> listSupplierProd(@Param("supplierId") Long supplierId, @Param("lang") Integer lang);

    /**
     * 导出商品
     *
     * @param supplierId
     * @param lang
     * @return
     */
    List<SupplierProdVO> getByParam(@Param("supplierId") Long supplierId, @Param("lang") Integer lang);

    /**
     * 根据供应商id查找已有的商品
     *
     * @param supplierId
     * @return 编码列表
     */
    List<String> getPartyCodeList(@Param("supplierId") Long supplierId);

    /**
     * 根据商品id删除供应商商品
     *
     * @param prodId
     */
    void deleteByProdId(@Param("prodId") Long prodId);

    /**
     * 根据商品id查询供应商
     *
     * @param prodId
     * @return
     */
    List<Long> listSupplierIdByProdId(@Param("prodId") Long prodId);

    /**
     * 根据skuIds查询供应商
     *
     * @param skuIds
     * @return
     */
    List<Long> listSupplierIdBySkuIds(@Param("skuIds") List<Long> skuIds);

    /**
     * 供应商商品列表
     *
     * @param pageAdapter
     * @param supplierId
     * @param partyCode
     * @return
     */
    List<SupplierProdVO> supplierProdList(@Param("page") PageAdapter pageAdapter, @Param("supplierId") Long supplierId, @Param("partyCode") String partyCode);

    /**
     * 供应商商品总数
     *
     * @param supplierId
     * @param partyCode
     * @return
     */
    long supplierProdTotal(@Param("supplierId") Long supplierId, @Param("partyCode") String partyCode);

    /**
     * 根据skuId删除商品
     *
     * @param prodId
     * @param skuIds
     */
    void deleteBySkuIds(@Param("prodId") Long prodId, @Param("skuIds") List<Long> skuIds);

    /**
     * 自采供应商商品总数
     * @param supplier
     * @param partyCode
     * @return
     */
    long defaultSupplierProdTotal(@Param("supplier") Supplier supplier, @Param("partyCode") String partyCode);

    /**
     * 获取默认供应商商品信息
     *
     * @param pageAdapter
     * @param supplier
     * @param partyCode
     * @param lang
     * @return
     */
    List<SupplierProdVO> defaultSupplierProdPage(@Param("page") PageAdapter pageAdapter, @Param("supplier") Supplier supplier, @Param("partyCode") String partyCode, @Param("lang") Integer lang);

    /**
     * 根据商品编码获取供应商商品信息
     *
     * @param partyCodeList
     * @param lang
     * @return
     */
    List<SupplierProdVO> listSupplierProdByPartyCodeList(@Param("partyCodeList") List<String> partyCodeList, @Param("lang") Integer lang);
}
